//
//  AutomaticViewController.m
//  ClassManager
//
//  Created by mac on 2018/1/8.
//  Copyright © 2018年 GZX. All rights reserved.
//

#import "AutomaticViewController.h"
#import "AutomaticModel.h"
#import "AutomaticCell.h"
#import "MJTableView.h"

@interface AutomaticViewController ()<UITableViewDelegate,UITableViewDataSource,MJTableViewDelegate>

@property (nonatomic,strong)MJTableView *tableView;
@property (nonatomic,strong)NSMutableArray<AutomaticModel *> *dataArray;

@end

@implementation AutomaticViewController


- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView = [[MJTableView alloc]initWithFrame:CGRectMake(0,0, kScreenWidth, kScreenHeight - TABH - StatusBarAndNavH) style:UITableViewStyleGrouped];
    self.tableView .delegate = self;
    self.tableView .dataSource = self;
    self.tableView.estimatedRowHeight = 50;
    self.tableView.rowHeight = UITableViewAutomaticDimension;
    self.tableView.layer.masksToBounds = YES;
    [self.view addSubview:self.tableView ];

    UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [clearButton setTitle:@"清除数据" forState:UIControlStateNormal];
    [clearButton setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal];
    [clearButton setBackgroundColor:[UIColor blueColor]];
    [clearButton addTarget:self action:@selector(removeAllObjectAction) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:clearButton];

    [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
        if (@available(ios 11.0,*)) make.edges.mas_equalTo(self.view.safeAreaInsets);
        else make.edges.mas_equalTo(self.view);
    }];
    [clearButton mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(self.view).offset(10);
        make.top.mas_equalTo(self.view).offset(200);
    }];

    __weak typeof(self)weakSelf = self;
    self.tableView.mjRefreshDataBlock = ^{
        [weakSelf MjReloadAction];
    };
    self.tableView.mjLoadingMoreDataBlock = ^{
        [weakSelf MjRoadMoreAction];
    };

}
-(void)removeAllObjectAction{
    [self.dataArray removeAllObjects];
    [self.tableView reloadData];
}
-(void)MjReloadAction{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self.dataArray removeAllObjects];
        for (int i = 0; i < 10; i ++ ) {
            AutomaticModel *model = [[AutomaticModel alloc]init];
            model.name = @"点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,";
            model.num = i;
            model.isOpen = NO;
            [_dataArray addObject:model];
        }
        [self.tableView reloadData];
    });
}
-(void)MjRoadMoreAction{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        for (int i = 0; i < 10; i ++ ) {
            AutomaticModel *model = [[AutomaticModel alloc]init];
            model.name = @"点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,";
            model.num = i;
            model.isOpen = NO;
            [_dataArray addObject:model];
        }
        if (_dataArray.count > 25) {
            self.tableView.isNoMoreData = YES;
        }
        [self.tableView reloadData];
    });
}
-(NSMutableArray<AutomaticModel *> *)dataArray{
    if (!_dataArray) {
        _dataArray= [NSMutableArray array];
        for (int i = 0; i < 10; i ++ ) {
            AutomaticModel *model = [[AutomaticModel alloc]init];
            model.name = @"点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,点我可以展开缩放,";
            model.num = i;
            model.isOpen = NO;
            [_dataArray addObject:model];
        }
    }
    return _dataArray;
}
#pragma mark ---- UITableViewDelegate&&UITableViewDataSource
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return self.dataArray.count;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    AutomaticCell *cell = [tableView dequeueReusableCellWithIdentifier:@"AutomaticCell"];
    if (!cell) {
        cell = [[AutomaticCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"AutomaticCell"];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    [cell ReloadData:self.dataArray[indexPath.row]];
    return cell;
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    return [[UIView alloc]initWithFrame:CGRectMake(0, 0,kScreenWidth, 0.1)];
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 0.1;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    return [[UIView alloc]initWithFrame:CGRectMake(0, 0,kScreenWidth, 0.1)];
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return 0.1;
}
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSNumber *height = [self.tableView.cacheHeightDict objectForKey:indexPath];
    if(height){
        return height.floatValue;
    }
    else{
        return 100;
    }
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSNumber *height = @(cell.frame.size.height);
    [self.tableView.cacheHeightDict setObject:height forKey:indexPath];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    AutomaticModel *model = self.dataArray[indexPath.row];
    model.isOpen = !model.isOpen;
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
 #pragma mark - Navigation

 // In a storyboard-based application, you will often want to do a little preparation before navigation
 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
 // Get the new view controller using [segue destinationViewController].
 // Pass the selected object to the new view controller.
 }
 */

@end


